home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 10 / BBS In A Box Volume X (AMUG) (January 1994).bin / Files / Prog / B-C / CIconButton CDEF 1.0.cpt / CIconButton CDEF 1.0 / CIconButton 1.0 Docs.dp / CIconButton 1.0 Docs.dp (.txt)
Encoding:
Common Ground  |  1993-10-27  |  347.6 KB  |  1,054 lines  |  [APPL/CGSL]

  1. ffffff
  2. ffff33
  3. ff33ff
  4. ff3333
  5. 33ffff
  6. 33ff33
  7. 3333ff
  8. 333333
  9. wwwwww
  10. UUUUUU
  11. DDDDDD
  12. """"""
  13. `Z<`[
  14. ``Z`Z``a
  15. 1O1UV
  16. [VTV[
  17. fZ[[ZaZ6T606T6Z1Z60[
  18. [0T70ZUU00Z0T
  19. [0*0a
  20. [0U+*0
  21. z1V0+0
  22. 0U[[U+
  23. \U11+
  24. *1+*1
  25. 0+0+[
  26. U\z\V1
  27. V11*1
  28. \101\
  29. \112U
  30. \1011
  31. \V12U
  32. \11*1
  33. \U1+1\
  34. \1*11
  35. \V7V\
  36. cV11*
  37. ]\V\\
  38. \1101b
  39. zU1*1
  40. \VU1*
  41. \110[
  42. \8101
  43. \[1*0[Z
  44. z\\U1*
  45. V[1*7Z``
  46. U1*UZ[U
  47. \U0U[
  48. [0+1U1*+[
  49. \**6+
  50. U[*0`
  51. SbI 2Stone Sans SemibdItal
  52.  Copyright Ramon M. Felciano 1993
  53. All Rights Reserved
  54. Digital Alchemy
  55. P.O.Box 9632
  56. Stanford, CA 94309-9632
  57. felciano@summit.stanford.edu
  58. 1Stone Serif
  59. Digital Alchemy
  60. CIconButton CDEF 1.0
  61. B 2Stone Sans Bold
  62. Overview
  63. CIconButton CDEF
  64. )UD is a custom control definition procedure that allows developers to 
  65. easily and
  66. HUelegantly include 
  67. icon buttons
  68.  in their applications. These icon buttons are built 
  69. from one or more
  70.  resources. The 
  71. CIconButton CDEF
  72.  works under System 6 & 
  73. $7, is sensitive to multiple monitors
  74. H4and monitor depths, and works with or without Color 
  75. O-Quickdraw. Mouse tracking is sensitive to the
  76. HAcicn mask, so your buttons don
  77. t have to be rectangular in shape.
  78. CIconButton CDEF
  79. )T* supports the three standard button types:
  80. ffffff
  81. ffff33
  82. ff33ff
  83. ff3333
  84. 33ffff
  85. 33ff33
  86. 3333ff
  87. 333333
  88. wwwwww
  89. UUUUUU
  90. DDDDDD
  91. """"""
  92. Pushbutton
  93. : a normal icon 
  94. button that hilights
  95. when you click on 
  96. it, and resets itself when you
  97. release the mouse.
  98. As shown here, it can be 
  99. a framed button (top) or
  100. an arbitrary region (below).
  101. ffffff
  102. ffff33
  103. ff33ff
  104. ff3333
  105. 33ffff
  106. 33ff33
  107. 3333ff
  108. 333333
  109. wwwwww
  110. UUUUUU
  111. DDDDDD
  112. """"""
  113. ffffff
  114. ffff33
  115. ff33ff
  116. ff3333
  117. 33ffff
  118. 33ff33
  119. 3333ff
  120. 333333
  121. wwwwww
  122. UUUUUU
  123. DDDDDD
  124. """"""
  125. Radio Button
  126. : the 
  127. same as the Pushbutton control,
  128. except that it 
  129. )F"toggles back and forth between two
  130. icons when you select it.
  131. 4It can also be used as a simple toggle switch (e.g. 
  132. %the key-latch in the Alarm Clock DA).
  133. ffffff
  134. ffff33
  135. ff33ff
  136. ff3333
  137. 33ffff
  138. 33ff33
  139. 3333ff
  140. 333333
  141. wwwwww
  142. UUUUUU
  143. DDDDDD
  144. """"""
  145. *8    Check Box
  146. : shows or hides a separate 
  147. alternate
  148. icon depending on its state. 
  149. This third icon is
  150. !usually a checkmark of some sort.
  151. CIconButton CDEF
  152. )WC uses offscreen graphics to enhance the appearance and behavior of 
  153. HNbuttons, and provide very fast drawing speeds. This usually requires a memory 
  154. overhead of 12-18K
  155. per 32-by-32 pixel icon. For 
  156. *the memory conscious, we also provide the 
  157. CIconButtonLite CDEF
  158.  which
  159. doesn
  160. t cache the icon images: 
  161. Ethe drawing is slightly slower, but only uses 3-5K per 32 by 32 pixel
  162. HIicon. All of the functionality described in this manual is available for 
  163.     both the 
  164. CIconButton CDEF
  165. CIconButtonLite CDEF
  166. The Demonstration Application
  167. The sample 
  168. )=5application demonstrates most of the features in the 
  169. CIconButton CDEF
  170. . All of the
  171. H[controls in the dialog make use of the API (Application Programming Interface) and Library 
  172. that was
  173. provided with this package.
  174. )Some notes about this sample application:
  175. 3There are four sets of icons you can test out; use 
  176. the popup menu to switch
  177. between different sets.
  178. DThe 
  179. Pushbutton
  180.  example in the 
  181. Grayscale Icons
  182.  set is an example 
  183. of the
  184. ~)selected-button icon generation that the 
  185. CIconButton CDEF
  186.  does. Normally,
  187. ~,you supply a separate cicn resource for the 
  188. "selected icon. If you don
  189. t, as in
  190. this case, the 
  191. CIconButton CDEF
  192. )T- will do its best to generate one on the fly.
  193. 1Stone Serif
  194. Digital Alchemy
  195. CIconButton CDEF 1.0
  196. 4The 
  197. Times 14 Bold, Italic
  198.  option is an example of 
  199. setting the button titles to
  200. ~6an arbitrary text font, size, style, and drawing mode.
  201. Note: 
  202. You may notice a 
  203. )WMflicker if you change several settings in the demonstration application (e.g.
  204. Hgchange the font, title orientation, and switch the icons). This flicker is due to a global realignment 
  205. H>button titles that occurs after every setting you change. The 
  206. CIconButton CDEF
  207.  makes no 
  208. assumptions
  209. HIabout how you want the title aligned (hence the variety of settings that 
  210. you can control); in this
  211. H.demonstration application, however, we adjust 
  212. 5each button after every setting change to reflect the
  213. HQcurrent font settings, title orientation, and the actual icons it is displaying. 
  214. For example, if you
  215. H+choose the 
  216. Times 14 bold, italic
  217.  option, 
  218. 7we set the font information for all 4 buttons, but also
  219. Heincrease the gap between the icon and the text to account for the larger font size (another 4 calls).
  220. \This flicker won
  221. t be an issue for you unless you plan to be switching several icons, fonts 
  222.     and title
  223. H<orientations on the fly. If you do plan to do a lot of this 
  224. X)kind of dynamic switching, we suggest you
  225. HGuse an offscreen pixMap or GWorld to do the drawing, and then copy the 
  226. final screen image to your
  227. H-window when you
  228. re done updating the buttons.
  229. 1Stone Serif
  230. Digital Alchemy
  231. CIconButton CDEF 1.0
  232. B 2Stone Sans Bold
  233. Using the CIconButton CDEF
  234. PThe imagery in a CIconButton control is built from cicn resources. Most buttons 
  235. used with the
  236. CIconButton CDEF
  237. )T> are created from two cicns: the Shell cicn and the Main cicn.
  238. Shell
  239. + cicn is a frame which house the Main icon 
  240. image. The advantage to
  241. ~Cstoring the Shell separately is that it saves disk space, and that 
  242. it fosters a
  243. ~)consistent look and feel to your buttons 
  244. "by letting them all share the same
  245. background.
  246. D cicn holds the iconic image you want to display in your button. It 
  247. ~ drawn centered in the Shell (if 
  248. 0no Shell is specified, the Main icon is centered
  249. in the control
  250. s rectangle).
  251. A third icon, the 
  252. )W    Alternate
  253.  icon, is 
  254. )+$used by the RadioButton and CheckBox
  255. ~/style buttons as the third part of the button. 
  256. This third part is hidden or
  257. ~>shown depending on the state of the button. For example, in a 
  258. CheckBox
  259. button, 
  260. )*>the Alternate icon plays the role of the 
  261.  in the box; for a
  262. ~<RadioButton, it plays the role of the 
  263.  inside the circle.
  264. INote that in a checkBox button, the checkmark (Alternate) icon is always 
  265. ~-the left of the Main icon, and that they are 
  266. #centered as a pair within the shell
  267. icon.
  268. Specifying the icons
  269. CIconButton CDEF
  270.  reinterprets three fields in 
  271. 2the standard toolbox ControlRecord data structures
  272. as the ID specifiers for these 
  273. ;icons.  This mapping is summarized in the table below. The 
  274.     contrlMin
  275. field holds the 
  276.  icon ID, the 
  277. )@    contrlMax
  278.  field holds the 
  279. Shell
  280.  icon ID, and the 
  281. contrlValue
  282. field
  283. holds the 
  284. )0    Alternate
  285. )/     icon ID.
  286. HUFor example, the following code creates a new pushbutton which will draw cicn ID 100 
  287.     (main) on
  288. H!top of cicn ID 1000 (shell). The 
  289. Courier
  290. kCIconButtonCDEFID
  291. )l) constant is the resource ID of the CDEF:
  292. dDbPushbutton := newControl(theWindow, itemBox, 
  293. My Pushbutton
  294. , true,
  295. 70, 100, 1000, (16 * kCIconButtonCDEFID), longint(NIL));
  296. HUThe following creates a radio button that toggles between two icons with IDs 200 and 
  297. 300. Note that
  298. H)the icons are not framed by a shell icon:
  299. EbPushbutton := newControl(theWindow, itemBox, 
  300. My RadioButton
  301. , true,
  302. 6300, 200, 0, (16 * kCIconButtonCDEFID), longint(NIL));
  303. HIThe following creates a checkbox button that shows icon ID 700 on top of 
  304. cicn ID 800, and that
  305. H@shows or hides icon ID 750 depending on the state of the button:
  306. BbPushbutton := newControl(theWindow, itemBox, 
  307. My Checkbox
  308. , true,
  309. 8750, 700, 800, (16 * kCIconButtonCDEFID), longint(NIL));
  310. You can, of 
  311. )=Rcourse, create your controls ahead of time and store them as CNTL resources in the
  312. Hfresource fork of your application. The demonstration application stores it
  313. s dialog controls this way.
  314. Normal and Hilite icons
  315. You can define a 
  316. separate set of cicns for 
  317. normal
  318.  and 
  319. hilited
  320. )#" buttons. If you want to include a
  321. hilited
  322.  version of the icon, include it 
  323. >as the next sequential cicn resource in the resource fork (for
  324. example, if your 
  325. normal
  326.  cicn is ID 1000, your 
  327. hilited
  328.  cicn should be ID 1001). You can specify
  329. HIcustom hilite-icons for any of the Main, Shell, and Alternate icons; for 
  330. those that don
  331. t have custom
  332. hilite-icons, the 
  333. CIconButton
  334. )60 CDEF will create hilighted versions on the fly.
  335. H-The data from the 
  336.  resources is loaded 
  337. :in when the control is first created. After reading in the
  338. icon IDs, the 
  339. CIconButton CDEF
  340.  resets those fields to the 
  341. 'standard off-state for the control, and
  342. H+doesn
  343. t touch them again. In order for the 
  344. CIconButton CDEF
  345.  to work, you 
  346. should at least specify the
  347. 1Stone Serif
  348. Digital Alchemy
  349. CIconButton CDEF 1.0
  350. default Main icon; if the 
  351. CIconButton CDEF
  352. )U9 cannot read that in during initialization, it will beep 
  353. H7alert you of the fact (but continue on as best it can).
  354. B 2Stone Sans Bold
  355. Field
  356. Meaning
  357. Reset-to
  358.     contrlMin
  359. )\    Main icon
  360.     contrlMax
  361. Shell icon
  362. contrlValue
  363. Alt icon
  364. Special Drawing Situations
  365. HThere is one issue worth pointing out that concerns the way the control 
  366. updates itself: when a CDEF
  367. HCreceives an update (draw) event, it assumes that the background is 
  368. !already correctly drawn. Normally
  369. HUthis isn
  370. t a problem since a CDEF usually overwrites the same screen region. For the 
  371. CIconButton
  372. 7, however, this can be tricky because of the API calls 
  373. (that allow you to change its geometry on
  374. HGthe fly (e.g. change the title from being below the button to being to 
  375. the right, or the Latch button
  376. H&that toggles between a vertical state 
  377. =and horizontal state depending on whether the mouse is inside
  378. or outside of the button). The 
  379. CIconButton CDEF
  380. )U, has no way of knowing what image underlies 
  381. HGcontrol, so it cannot always effectively 
  382. erase
  383.  itself before drawing.
  384. PWe solve this by providing (1) a callback to allow you to redraw the background 
  385. image, and (2) a
  386. H DynamicGeometry flag to let the 
  387. CIconButton CDEF
  388. )V& know it is dealing with one of these 
  389. special
  390. H/situations. These features are described below.
  391. 1Stone Serif
  392. Digital Alchemy
  393. CIconButton CDEF 1.0
  394. B 2Stone Sans Bold
  395. The API Routines
  396. You can modify 
  397. )VKthe icon IDs and other settings of a CIconButton control using the routines
  398. H9provided in the CIconButton.lib file. These routines are 
  399. \)described below, and their headers can be
  400. H found in CIconButton.Lib.Intf.p.
  401. Courier
  402. @PROCEDURE CIB_SetUseWFont (c: ControlHandle; useWFont: boolean);
  403. \Determines whether the title is displayed in the window
  404. s font, style and size, or uses the 
  405. standard
  406. H2System font and size (usually Chicago 12pt plain).
  407. DPROCEDURE CIB_SetDynamicGeometry (c: ControlHandle; GeometryChanges:
  408.     boolean);
  409. Determines how the 
  410. CIconButton CDEF
  411. )V7 erases its box when updating. The default setting for 
  412. H3DynamicGeometry flag is false: erase the icon mask 
  413. J+before drawing using the current background
  414. H"color and pattern. This should be 
  415. :all you need in most cases (including buttons on non-white
  416. backgrounds)
  417. 1If your button
  418. s geometry changes while tracking 
  419. .the mouse (like the Latch button), the control
  420. HDneeds not only to erase the area it will draw to, but erase its old 
  421. #position as well. In this case, the
  422. H;DynamicGeometry flag should be true. Note that if you have 
  423. a checkbox button 
  424. without
  425.  a shell icon
  426. HH(i.e. on a blank background), your button
  427. s geometry will change (since 
  428. the Alternate icon will
  429. toggle on and off).
  430. CPROCEDURE CIB_SetCallbackProc (c: ControlHandle; theProc: procPtr);
  431. NSets the draw procedure that  should use to erase its background. Use this if 
  432. ve got a complex
  433. background and 
  434. )QOyour button changes geometry (in the example application, the Latch button uses
  435. this to redraw 
  436. )ESthe patterned gray background). The procedure receives a handle to the control, and
  437. HLthe rect it should draw into. Here
  438. s the one used by the sample application:
  439. 4PROCEDURE UpdateRoutine (c: controlHandle; r: rect);
  440.    BEGIN
  441.       foreColor(yellowColor);
  442.       FillRect(r, gray);
  443.       foreColor(blackColor);
  444.    END;
  445. HAPROCEDURE CIB_SetTitleOrientation (c: ControlHandle; orientation:
  446.     integer);
  447. bDetermines where the title is positioned relative to the icon. Use the following constants (taken 
  448. H&the System 7 icon family definitions):
  449.   atTop = $2;
  450.   atBottom = $3;
  451.   atLeft = $8;
  452.   atRight = $C;
  453. H^You can hide the title by setting it to the empty string via the toolbox SetCTitle call. Note 
  454. that you
  455. H!need to pass in an empty string, 
  456.  a NULL pointer.
  457. H<PROCEDURE CIB_SetTrackRegion (c: ControlHandle; TrackRegion:
  458.     boolean);
  459. Determines whether 
  460. CIconButton CDEF
  461. )U8 tracks the mouse in the icon region or across the whole
  462. Hgcontrol rectangle. This is useful for small icons that may be hard to click on (e.g. the latch button).
  463. >PROCEDURE CIB_SetMainIcon (c: ControlHandle; iconID: integer);
  464. ?PROCEDURE CIB_SetShellIcon (c: ControlHandle; iconID: integer);
  465. =PROCEDURE CIB_SetAltIcon (c: ControlHandle; iconID: integer);
  466. UThese calls allow you to set or reset the icon IDs for a given button. If you pass 0 
  467. into the iconID
  468. H$parameter, that icon won
  469. t be drawn.
  470. 1Stone Serif
  471. Digital Alchemy
  472. CIconButton CDEF 1.0
  473. Courier
  474. HEPROCEDURE CIB_SetIcons (c: ControlHandle; main, shell, alt: integer);
  475. fThis lets you do the same thing as the three procedures listed above, but lets you set all three icon 
  476. at once.
  477. ;PROCEDURE CIB_SetLabelGap (c: ControlHandle; gap: integer);
  478. ^Sets the distance between the Shell (or Main) icon and the button label for checkmark buttons.
  479. ?PROCEDURE CIB_SetCheckmarkGap (c: ControlHandle; gap: integer);
  480. USets the distance between the Main icon and the Alternate icon for checkmark buttons.
  481. ?PROCEDURE CIB_SetTextFont (c: ControlHandle; theFont: integer);
  482. PSets the text font for the control. Use the toolbox GetFNum call to translate a 
  483. font name to a
  484. H\number in order to use this routine. If you pass in 0, the control will be displayed in the 
  485. System font,
  486. HAor in the Window font if the 
  487. UseWFont
  488.  flag has been set (using 
  489. CIB_SetUseWFont
  490. H=PROCEDURE CIB_SetTextFace (c: ControlHandle; theFace: Style);
  491. "Sets the text face (or style) for 
  492. Cthe control. If you pass in 0, the control will be displayed in the
  493. System font
  494. )FQtextface, or in the Window
  495. s text face if the 
  496. UseWFont
  497.  flag has been set (using
  498. CIB_SetUseWFont
  499. H?PROCEDURE CIB_SetTextSize (c: ControlHandle; theSize: integer);
  500. 6Sets the text size for the control. If you pass in 0, 
  501. 3the control will be displayed in the default System
  502. H]font size, or in the Window font if the 
  503. UseWFont
  504.  flag has been set (using CIB_SetUseWFont).
  505. ?PROCEDURE CIB_SetTextMode (c: ControlHandle; theMode: integer);
  506. :Sets the text mode for the control. If you pass in 0, the 
  507. `(control will be reset to the system mode
  508. srcCopy
  509. )*;). Note that the default mode will write black text into a 
  510. white box, regardless of the
  511. HKcurrent background color or pattern. If you want the button text to lie on 
  512. top of a background color
  513. or image, use 
  514. srcOr
  515. H;PROCEDURE CIB_SetTextState (c: ControlHandle; theTextState:
  516. textStatePtr);
  517. QSets the text font, face, size and mode for the control. This is a shortcut call 
  518. to use if you want to set
  519. all of these 
  520. )7[parameters at once (note that after each of these calls, the button redraws itself; thus if
  521. Heyou used 4 separate calls rather than this single call, you would get a slight flicker as the button 
  522. draws
  523. H4itself 4 times). The routine accepts a pointer to a 
  524.     textState
  525.  record, defined as follows:
  526.    TextState = PACKED RECORD
  527.       tsFont: integer;
  528.       filler: byte;
  529.       tsFace: Style;
  530.       tsMode: integer;
  531.       tsSize: integer;
  532.     END;
  533.     TextStatePtr = ^TextState;
  534. H,You should ensure that your compiler treats 
  535. 9integers as 2 bytes, and a style type as 1 byte long (the
  536. H whole record should be 8 bytes).
  537. B 2Stone Sans Bold
  538. Standard API Routines
  539. CIconButton CDEF
  540.  also supports several other 
  541. /messages that all defProcs from Digital Alchemy
  542. support. They are as follows:
  543. 9FUNCTION CIB_IsCustomControl (c: ControlHandle): boolean;
  544. Returns true if the defProc 
  545. Eis a custom one designed by Digital Alchemy. This routine essentially
  546. H4checks an 
  547. author code
  548.  embedded inside the defProc.
  549. 1Stone Serif
  550. Digital Alchemy
  551. CIconButton CDEF 1.0
  552. Courier
  553. H5FUNCTION CIB_GetCopyright (c: ControlHandle): str255;
  554. PReturns a copyright string for inclusion in manuals and About boxes. If you are 
  555. using this defProc in
  556. a freeware 
  557. )3Wor shareware program, this text should appear along with your other credits, presumably
  558. in the About box.
  559. 4FUNCTION CIB_GetVersion (c: ControlHandle): longint;
  560. 2Returns the version info for the defProc. This is 
  561. 2the same format as the 
  562. short version
  563.  information
  564. H(as normally stored in a 
  565.  resource.
  566. 1Stone Serif
  567. Digital Alchemy
  568. CIconButton CDEF 1.0
  569. B 2Stone Sans Bold
  570. Some Icon Combinations
  571. ]In order to help clarify how the different icon categories work together, we
  572. ve put together 
  573. this table
  574. H9that demonstrates some common combinations. The last two 
  575. r"columns show what the button would
  576. Hflook like depending on the value of the control
  577. s cntrlValue field: 0 for Off, any other value for On.
  578. Shell
  579. )B    Off-state
  580. On-state
  581. ffffff
  582. ffff33
  583. ff33ff
  584. ff3333
  585. 33ffff
  586. 33ff33
  587. 3333ff
  588. 333333
  589. wwwwww
  590. UUUUUU
  591. DDDDDD
  592. """"""
  593. Courier
  594. pushButProc
  595. ffffff
  596. ffff33
  597. ff33ff
  598. ff3333
  599. 33ffff
  600. 33ff33
  601. 3333ff
  602. 333333
  603. wwwwww
  604. UUUUUU
  605. DDDDDD
  606. """"""
  607. ffffff
  608. ffff33
  609. ff33ff
  610. ff3333
  611. 33ffff
  612. 33ff33
  613. 3333ff
  614. 333333
  615. wwwwww
  616. UUUUUU
  617. DDDDDD
  618. """"""
  619. ffffff
  620. ffff33
  621. ff33ff
  622. ff3333
  623. 33ffff
  624. 33ff33
  625. 3333ff
  626. 333333
  627. wwwwww
  628. UUUUUU
  629. DDDDDD
  630. """"""
  631. radioButProc
  632. ffffff
  633. ffff33
  634. ff33ff
  635. ff3333
  636. 33ffff
  637. 33ff33
  638. 3333ff
  639. 333333
  640. wwwwww
  641. UUUUUU
  642. DDDDDD
  643. """"""
  644. ffffff
  645. ffff33
  646. ff33ff
  647. ff3333
  648. 33ffff
  649. 33ff33
  650. 3333ff
  651. 333333
  652. wwwwww
  653. UUUUUU
  654. DDDDDD
  655. """"""
  656. UUUUUU
  657. checkBoxProc
  658.      
  659. ffffff
  660. ffff33
  661. ff33ff
  662. ff3333
  663. 33ffff
  664. 33ff33
  665. 3333ff
  666. 333333
  667. wwwwww
  668. UUUUUU
  669. DDDDDD
  670. """"""
  671. ffffff
  672. ffff33
  673. ff33ff
  674. ff3333
  675. 33ffff
  676. 33ff33
  677. 3333ff
  678. 333333
  679. wwwwww
  680. UUUUUU
  681. DDDDDD
  682. """"""
  683. ffffff
  684. ffff33
  685. ff33ff
  686. ff3333
  687. 33ffff
  688. 33ff33
  689. 3333ff
  690. 333333
  691. wwwwww
  692. UUUUUU
  693. DDDDDD
  694. """"""
  695. pushButProc
  696. ffffff
  697. ffff33
  698. ff33ff
  699. ff3333
  700. 33ffff
  701. 33ff33
  702. 3333ff
  703. 333333
  704. wwwwww
  705. UUUUUU
  706. DDDDDD
  707. """"""
  708. ffffff
  709. ffff33
  710. ff33ff
  711. ff3333
  712. 33ffff
  713. 33ff33
  714. 3333ff
  715. 333333
  716. wwwwww
  717. UUUUUU
  718. DDDDDD
  719. """"""
  720. ffffff
  721. ffff33
  722. ff33ff
  723. ff3333
  724. 33ffff
  725. 33ff33
  726. 3333ff
  727. 333333
  728. wwwwww
  729. UUUUUU
  730. DDDDDD
  731. """"""
  732. ffffff
  733. ffff33
  734. ff33ff
  735. ff3333
  736. 33ffff
  737. 33ff33
  738. 3333ff
  739. 333333
  740. wwwwww
  741. UUUUUU
  742. DDDDDD
  743. """"""
  744. pushButProc
  745. ffffff
  746. ffff33
  747. ff33ff
  748. ff3333
  749. 33ffff
  750. 33ff33
  751. 3333ff
  752. 333333
  753. wwwwww
  754. UUUUUU
  755. DDDDDD
  756. """"""
  757. ffffff
  758. ffff33
  759. ff33ff
  760. ff3333
  761. 33ffff
  762. 33ff33
  763. 3333ff
  764. 333333
  765. wwwwww
  766. UUUUUU
  767. DDDDDD
  768. """"""
  769. ffffff
  770. ffff33
  771. ff33ff
  772. ff3333
  773. 33ffff
  774. 33ff33
  775. 3333ff
  776. 333333
  777. wwwwww
  778. UUUUUU
  779. DDDDDD
  780. """"""
  781. ffffff
  782. ffff33
  783. ff33ff
  784. ff3333
  785. 33ffff
  786. 33ff33
  787. 3333ff
  788. 333333
  789. wwwwww
  790. UUUUUU
  791. DDDDDD
  792. """"""
  793. pushButProc
  794. ffffff
  795. ffff33
  796. ff33ff
  797. ff3333
  798. 33ffff
  799. 33ff33
  800. 3333ff
  801. 333333
  802. wwwwww
  803. UUUUUU
  804. DDDDDD
  805. """"""
  806. ffffff
  807. ffff33
  808. ff33ff
  809. ff3333
  810. 33ffff
  811. 33ff33
  812. 3333ff
  813. 333333
  814. wwwwww
  815. UUUUUU
  816. DDDDDD
  817. """"""
  818. ffffff
  819. ffff33
  820. ff33ff
  821. ff3333
  822. 33ffff
  823. 33ff33
  824. 3333ff
  825. 333333
  826. wwwwww
  827. UUUUUU
  828. DDDDDD
  829. """"""
  830. ffffff
  831. ffff33
  832. ff33ff
  833. ff3333
  834. 33ffff
  835. 33ff33
  836. 3333ff
  837. 333333
  838. wwwwww
  839. UUUUUU
  840. DDDDDD
  841. """"""
  842. radioButProc
  843. ffffff
  844. ffff33
  845. ff33ff
  846. ff3333
  847. 33ffff
  848. 33ff33
  849. 3333ff
  850. 333333
  851. wwwwww
  852. UUUUUU
  853. DDDDDD
  854. """"""
  855. ffffff
  856. ffff33
  857. ff33ff
  858. ff3333
  859. 33ffff
  860. 33ff33
  861. 3333ff
  862. 333333
  863. wwwwww
  864. UUUUUU
  865. DDDDDD
  866. """"""
  867. ffffff
  868. ffff33
  869. ff33ff
  870. ff3333
  871. 33ffff
  872. 33ff33
  873. 3333ff
  874. 333333
  875. wwwwww
  876. UUUUUU
  877. DDDDDD
  878. """"""
  879. radioButProc
  880. ffffff
  881. ffff33
  882. ff33ff
  883. ff3333
  884. 33ffff
  885. 33ff33
  886. 3333ff
  887. 333333
  888. wwwwww
  889. UUUUUU
  890. DDDDDD
  891. """"""
  892. UUUUUU
  893. wwwwww
  894. UUUUUU
  895. checkBoxProc
  896. ffffff
  897. ffff33
  898. ff33ff
  899. ff3333
  900. 33ffff
  901. 33ff33
  902. 3333ff
  903. 333333
  904. wwwwww
  905. UUUUUU
  906. DDDDDD
  907. """"""
  908. ffffff
  909. ffff33
  910. ff33ff
  911. ff3333
  912. 33ffff
  913. 33ff33
  914. 3333ff
  915. 333333
  916. wwwwww
  917. UUUUUU
  918. DDDDDD
  919. """"""
  920. 1Stone Serif
  921. Digital Alchemy
  922. CIconButton CDEF 1.0
  923. B 2Stone Sans Bold
  924. Acknowledgments
  925. Thanks go to the following for 
  926. testing the 
  927. CIconButton CDEF
  928. )U% and giving valuable feedback through
  929. out its development.
  930. Kevin Boyce
  931. Trey Campbell
  932. John Cavallino
  933. John Champion
  934. Steve Dagley
  935. Randy DeRuiter
  936. Gerard Hammond
  937. Hackster
  938.  Hekster
  939. Jim McQuillan
  940. Matthew Xavier Mora
  941. Harry A. Reinke
  942. George T. Talbot
  943. Adam Treister
  944. HYThanks to Peter N. Lewis and Forrest Tanaka for help on the Quickdraw color manipulation 
  945.     code, and
  946. H2to Jon Wind for inspiration in the About box code.
  947. 2Special thanks to John Cavallino for inspiration, 
  948. 0Ben 
  949. Hackster
  950.  Hekster for faithful beta-testing
  951. HRacross my many projects, and Adam Treister and Rich Siegel for giving my defProcs 
  952. their first real
  953. homes.
  954. Licensing and Distribution
  955. CIconButton CDEF
  956. )U. is 
  957.  copyrighted Ramon M. Felciano 1993, All 
  958. !Rights Reserved. The distribution
  959. HMpackage may be copied and distributed freely as long as no modifications are 
  960. made to it and nothing
  961. is charged for 
  962. )DTit. The CDEF must be licensed for use in any software project according to the terms
  963. set forth below.
  964. ZUsage of the object code (CDEF) in software is subject to a licensing fee of $50.00 for a 
  965. single-product
  966. license ($25.00 for 
  967. )bLshareware/in-house software), or $300.00 for a multiple-product license. The
  968. single-product licensing 
  969. )uLfee is waived for non-commercial, in-house software, or software with a list
  970. HYprice of under $100.00, provided you credit CIconButton and Digital Alchemy in the About 
  971. box, and
  972. H?send us a copy of the software. 
  973. About
  974.  box credit should read:
  975. CIconButton CDEF
  976.  from Digital Alchemy
  977.  Ramon M. Felciano 1993, All Rights Reserved
  978. Source code is available 
  979. )yFfor support purposes for $300.00. Source code is provided as a support
  980. HKmaterial only in order to allow developers to debug problems as quickly as 
  981. possible. It is not provided
  982. H^as sample code. All code and derivative works thereof remain copyrighted by Ramon M. Felciano.
  983. TThe fees are additive: if you pay for 6 single-product licenses at $50.00, you will 
  984. automatically get the
  985. HJmultiple-product license. The table below summarizes the licensing scheme:
  986. 0Single-product, with software exhange & 
  987.  credit
  988. $0.00
  989. ~%Single-product, in-house or shareware
  990. $25.00
  991. Single-product
  992. $50.00
  993. Multiple-product
  994. $300.00
  995. Pascal source code
  996. $300.00
  997. H4License pricing is subject to change without notice.
  998. 1Stone Serif
  999. Digital Alchemy
  1000. CIconButton CDEF 1.0
  1001. B 2Stone Sans Bold
  1002. Contacting Digital Alchemy
  1003. bPlease send any comments, suggestions or bug reports to me at one of the electronic-mail addresses
  1004. listed below:
  1005. Internet
  1006. felciano@summit.stanford.edu
  1007. America Online
  1008. felciano@summit.stanford.edu
  1009.     Applelink
  1010. )Z&felciano@summit.stanford.edu@internet#
  1011. Compuserve
  1012. )Z$>INTERN:felciano@summit.stanford.edu
  1013. HfYou can also contact via U.S.Mail, but electronic-mail is guaranteed to get you a faster response! Our
  1014. mailing address is:
  1015. Digital Alchemy
  1016. P.O.Box 9632
  1017. Stanford, CA 94309-9632
  1018. 58?9&(6K-<
  1019. L7:+>J0*D%
  1020. GFCEA
  1021. !#3,*
  1022.  X08P
  1023. >* )3
  1024. 58?9&(6K-<
  1025. L7:+>J0*D%
  1026. GFCEA
  1027. !#3,*
  1028. >* )3
  1029. Startup Man    temp.0001
  1030. Applications & Utilities aliast
  1031. fashMACS
  1032. Ramon M. Felciano
  1033. SUMMITM. Felciano
  1034. Microsoft Word
  1035. ffffff
  1036. ffff33
  1037. ff33ff
  1038. ff3333
  1039. 33ffff
  1040. 33ff33
  1041. 3333ff
  1042. 333333
  1043. wwwwww
  1044. UUUUUU
  1045. DDDDDD
  1046. """"""
  1047. Courier:
  1048. B 2Stone Sans Bold:    
  1049. SbI 2Stone Sans SemibdItal:
  1050. 1Stone Serif
  1051. rPREC
  1052. ~PRVS
  1053. &FNMS
  1054.